浅友们好~我是史中,我的日常生活是开撩五湖四海的科技大牛,我会尝试各种姿势,把他们的无边脑洞和温情故事讲给你听。如果你想和我做朋友,不妨加微信(shizhongmax)。这是《论语》里的一句话。孔子说,你只要给我拿十块腊肉,我就收你为学生。相比孔子的学识来说,十块腊肉基本等于零元购了。往事越千年,如今可是市场经济的年代,“腊肉学费”之类的事情早已绝迹,成为人们怀念的上古遗风。不过,最近我遇到了一群奇怪的老师傅,他们使出毕生绝学雕刻出几套“代码拳法”,却开了个“拳馆”免费传授,让天下码农随便取用,连腊肉都不要。。。正所谓“朝饮木兰之坠露兮,夕餐秋菊之落英”,赠人玫瑰,手留清香。你可能有点懵:中哥你的意思是有一群人撸完代码,然后免费送人?他们是家里有矿然后搞行为艺术吗?看上去是,其实不是。世界上最有滋味的事儿,不都是那种让人觉得“好怪哦,再看一眼”的操作么?话说,在人类打呼噜的时候,有两样东西却在倍加勤奋地工作,一个是金钱,一个是代码。微众银行的命运剧本就和这两样“永不眠”的东西都有关:第一,微众银行是我们国家第一家民营银行,职责就是在一些传统银行较少涉足的金融地带“拓荒”。
比如他们没有实体营业厅,所有存贷业务都在互联网上进行;比如他们服务了大量个人用户和小微企业。
第二,微众银行服务的小微客户比星星都多,管理这么多账户,自然要消耗很多计算资源。
如果不能通过精巧的代码设计把单账户管理成本降低到极限,那就可能被黑洞一样的IT成本给拖累。
所以,微众银行的老师傅,从第一天起就背负两个使命:有一个人,全天候24小时都在思考这个问题,他就是微众银行的副行长,首席信息官马智涛。大家平时都喜欢称呼马智涛的英文名 Henry,后面我也叫他 Henry 吧。每次和 Henry 聊天我都非常期待。第一个原因是。。。我们俩都喜欢哆啦A梦;第二个原因是,他以一种极高的自尊对待技术这个职业,并且以同样的高自尊要求微众银行所有的技术老师傅。美国作家大卫·布鲁克斯曾经写过一本书,叫做《第二座山》。他把人生的追寻比喻成两座山,爬第一座是为自己,爬第二座是为他人。“为自己”这座山爬到顶峰会成为一个“厉害的人”,而“为他人”这座山的顶峰则是成为一个“有用的人”。实际上最大的区别就是:厉害的人,别人可能会怕他;有用的人,别人一定会爱他。在我看来,Henry 心中“技术人的高自尊”,就包括这两座山:技术人要在第一座山上“练武”,更要在第二座山上“传武”。自从2014年微众银行成立,到今天已经八年多。这群老师傅用代码积沙填海,从0个客户扛到了如今3.6亿客户,这就是技术人精进武艺的本分,也就是我所说的“练武”。而从2017年开始,微众银行把自己练就的武艺中最独特的“几门功法”陆续开源了出来,让全世界的武林中人可以随意研习,这就是我所谓的“传武”。如果仅仅是打开武馆大门,来人想学就学,学完就走,那这件事儿终究会变成“行为艺术”,就算家里有矿也会越做越没劲。而微众银行的故事走向却非常不同。他们打开武馆后,不仅有人络绎来学,还有更多的武林中人自愿留下来,和老师傅一起探讨拳路,不断改进功法,从而让“微众的武馆”变成了“武林的武馆”。于是此处渐渐熙攘,大师云集,成为天下侠客心中一处精神栖息地。了解一个人,有个好办法,就是去看ta童年的照片。了解一群人,也是如此。那是2014年春天,微众银行尚在筹备,创始技术团队连办公室都没有,只好“打游击”。这张照片,就是他们“游”到一家饭店的包间拍的。后排中间的老哥就是 Henry。注意,他背后的不是啥黑板,而是把一张纸贴在电视上,用来讨论技术。。。眼看银行开业在即,究竟要选个啥样的IT架构,还没有最终定论。
单看这个画面,你可能会觉得滑稽:这帮人怕是没开过银行吧?该用啥技术都不知道么?!正好相反,筹建微众之前,Henry 曾经在银行业摸爬滚打了12年;更关键的是,他曾经亲手操刀,帮助平安银行做过“换心手术”,把沿袭自上个世纪的传统银行IT架构改换成了更灵巧的“系统群架构”。这次 Henry 迟迟没下手,不是不了解银行架构,而是太了解银行架构了。。。这是 Henry 画出的IT系统架构设计草图。看不懂没关系,我给你解释一下。举个栗子:集中式的系统有点像高铁,分布式的系统有点像汽车。但它有两个问题:一是它的运力很难切分——只有三个乘客买票,你也得开一整列火车;二是整个系统一旦建成后就很难调整——没听说高铁站随便搬家的。汽车就不同了,三个人就搞一辆车,五个人就搞两辆车。它的运力非常细碎,几乎不会浪费;它还非常灵活,哪怕临时改变目的地,司机一拧方向盘也就过去了;你别看它一个实体营业厅都没有,可没有营业厅反而意味着到处都是营业厅:手机打开它的App去理财,某个电商调用它的API去贷款,任何一次对微众系统的访问,都相当于有人来了一趟营业厅。。。
这就是所谓的“开放银行”。一个开放银行系统,承受几亿人潮水一样的访问冲击,很合理吧?可那毕竟是“将来”,开放银行究竟能做多大,多久能做大,中间需要肿么调整姿势,只有天知道。你搞一个高铁一样死贵死贵的僵化的的集中系统,万一事情发展跟你预想的不一样,不就gg啦。。。最聪明的办法,当然是先搞“几辆车”试着跑一跑,业务多些了再加“几辆车”,业务再多了就再加几百、几千辆车嘛!经过我这么一解释,你就能看懂 Henry 在白纸上画的那个图了。这个架构恰恰就是“一只羊也能赶,一万只羊也能放”的分布式架构。(这个故事我写在了《微众银行的1800天》里,有兴趣可以去复习~)一片绿意盎然的森林里,散坐着一群眉头紧皱的老师傅,他们跟幼稚园大班的小朋友一样手里拿着各种“乐高”积木,正在来回拼插。而一个架着厚厚镜片的老哥穿梭在他们中间,看看这个,看看那个,若有所思。卢道和,大家都爱叫他道哥,人如其名,知命天道,气蕴平和。作为微众银行基础科技的负责人,道哥的任务是把 Henry 在那张图里吹的牛给实现出来。可在此之前,地球上就没人用分布式架构做过银行系统,想抄作业都没处抄,想花钱买也没人卖,再平和的人也平和不了啊!好消息是,腾讯的分布式数据库(TDSQL)团队,愿意和微众银行的技术团队一起攻坚,搭建银行的存款核心系统,通俗理解就是那个“账本”(这段故事我写在了《腾讯偷塔》里,浅友们可以复习~);坏消息是,开银行不能只靠一个账本啊,你还得有大数据系统、用户服务系统。。。少说也得百十来个系统才能凑齐一整套梁山好汉吧。宝宝心里苦,宝宝不能说。道哥只好带着大伙儿去“打野”——看看这世界上都有什么开源模块,然后“采摘”过来怼在一起,凑出完整的系统——于是便有了大家坐在野地里“拼乐高”的盛景。这里不妨暂停一下,问你个问题:道哥他们为啥能找到这些“野生代码”?换句话说,这世界上到底为啥会有人把自己辛辛苦苦写的代码开源出来,让别人免费用?!我把我思考的“开源经济学”总结成六句话,你看看有没有道理:一、我们的社会遵循等价交换原则——作者把软件给别人,必然需要得到等值的回报,这事儿天经地义。二、回报=“常规回报”+“额外回报”——常规回报就是直接售卖软件得到的报酬;额外回报包括但不限于“使用者帮助作者改进软件质量”,“软件被广泛使用后作者能获得荣誉感和行业地位”,“行业地位带给作者其他商业机会”。三、软件流通的成本非常低——代码依靠光信号传输,依靠计算机自我复制和存储,制造、运输费用几乎为零。所以相比实体工业品,软件传播成本更低,很容易形成“赢家通吃”的局面。四、赢家通吃的局面会形成网络效应,从而让作者的“额外回报”指数级升高——这里就存在一个有趣的临界点:只要使用者大于一定规模,“额外回报”这一项就已经超过了软件的“标价”,此时哪怕“常规回报”为零,也不违背等价交换原则。五、所以,一旦作者对自己的软件有信心,相信它可以突破那个“临界点”,那么作者的理性选择就是——把软件免费送给大家用,迅速占领市场,博取更长期也更丰厚的“额外回报”。六、越多优秀作者参与,自然越能让软件质量快速提升,“额外回报”来得也越快、越多——吸引优秀作者加入软件开发最快的方法,就是把软件源代码开放出来。这样一来,软件质量自有公论,众人拾柴火焰高。你发现没?这个逻辑有点像武林争霸:厉害的功夫不能秘授暗传,而是要敞开山门发扬光大。话说回来,如果放在十年前,老师傅这么“打野”还真不一定能成,因为彼时软件流通的成本略高,开源世界像哥伦布的美洲,还只是探险者的天堂;但到了2014年,IT基础设施迅猛发展,开源世界已经有点像18世纪的美洲,物产丰饶,铁路纵横,俨然气象初成。满园瓜果,娇艳欲滴,此时不采,天理难容,Cheers!看过这三张照片,你大概就明白了:由于“蜜汁技术自信”、“特殊的商业定位”和“恰当的历史机遇”,微众银行的脐带和“开源”两个字连在一起。无论后面它如何添肌增骨成为巨人,细胞里的脱氧核糖核酸都写满了“开源”。毕竟这些模块都不是给微众银行量身定制的,你一分钱没花拿来,还想全方位无侧漏,哪有这么好的事儿?于是微众银行刚开门迎客,道哥就投入了下一个主线任务:继续去“打野”,捕获一些厉害的老师傅,让他们在“开源模块”之间搞出一些微众银行自己的“关节”,把所有积木黏成一个完整的、能自由活动的变形金刚,不就更能打了吗!2016年时,邸帅在一家金融科技公司负责数据平台服务团队,眼看大数据领域迎来机会,他撸袖子准备大干一番。可郁闷的是,团队招聘屡屡受阻,工作进展停滞不前。。。
讲这个场景,不是为了说前东家坏话,而是说各家公司因为发展阶段和战略不同,对技术路线的阶段性规划和投入侧重点不同,这是客观现实。道哥的操作很骚,他并没发表什么“赶英超美”的高论,只是简单切磋了一下对技术的理解。这一切把邸帅切不困了——道哥来言去语围绕的都是腾讯、阿里这种超一流公司如何把数据平台玩得飞起,字里行间都是对“亲手做出顶级技术”这件事儿的无尽渴望。入职第一天,连工位在哪都没记牢,数据平台的一个测试环境就挂了。邸帅跟大家一起抢修到凌晨三点。。。平台挂掉,表明技术底子比较弱,这当然不是啥好事儿,但转念一想——为啥早不出问题晚不出问题嘞?当然是因为此刻业务量在暴涨嘛!从天空俯瞰,彼时微众银行的第一个爆款业务“微粒贷”正在迅猛爆发;而贷款业务最最最重要的一步,就是判断客户的风险;判断风险的依据,就是大数据计算。邸帅的大数据团队瞬间成了“爱豆”一般的存在,每天好多人围着他们。。。当然不是要签名,是要他们帮忙“算数”。老师傅们星夜兼程做了一套“数据中央厨房”(名叫 WeDatasphere):厨房里有各种原始数据,就相当于豆角、茄子之类的食材;
厨房里有几十种“锅”,它们代表不同的数据应用——不同业务团队可以根据实际需要,选择用最合适的锅“烹调数据”。
厨房里还有好几种“灶”,有煤气灶、微波炉、电烤箱,它们代表不同的数据引擎——不同的食材得配合不同的锅和灶具才能做出不同的菜嘛。
这些“锅”和“灶”都是现成的开源软件,拿来就用,数据团队不用费劲开发。(其中有一款叫做 Flink 的“灶”我们还专门介绍过,有兴趣的浅友可以去复习:《和时间赛跑的引擎》)首先,会做饭的浅友都知道,不同锅灶之间不是一对一绑定的关系,而是根据菜式的不同,交叉配合,非常复杂。这个“数据厨房”也一样,如果有人不小心用微波炉做了米饭,虽说也能熟,但肯定不好吃。
其次,“数据厨房”是好多业务团队公用的,这么多人在一起做饭,难免马勺碰马桶,相互抢资源。
你可能已经发现,这两个问题从本质上来说,就是不同开源模块之间缺乏好用的“关节”造成的。这个关节问题很像人体的”风湿病“,平时没啥事儿,可一到阴天下雨就疼,而且解决起来还很麻烦。眼看越来越多同事涌进“数据厨房”,系统的“风湿病”越犯越频繁。“当初你不是说想在数据平台上搞点儿牛X的技术么?现在我们看到一个好机会,就做一个方便数据应用和数据引擎之间连接的“操作台”,怎么样?”邸帅拿到金牌令箭,内心如潮奔涌,等了这么多年了总算有机会大展拳脚,赶紧拉着团队小伙伴一起疯狂输出——这个模块,就叫 Linkis。(Linkis 是后来改的名字,为了减轻你的认知负担我就不给你说“曾用名”了。)看到这,你可能已经发现,这邸帅老师傅是个不可多得的技术理想主义者啊!没错。世界上有几个技术理想主义者,这不稀奇。稀奇的是:微众银行里技术理想主义者的浓度极高——你随便扔块砖,扔十次有九次都能砸中技术理想主义者。这不,就在邸帅夜以继日开发 Linkis 的档口,还有另外几个团队,也在研究各自的“大杀器”。刚才咱们不是提到,在微众银行有很多业务模块么?不同模块之间需要配合。中哥我买了张地铁票,钱从我的微众银行账户里扣除,之后我会收到一条短信:您的尾号8888的微众卡在北京地铁消费了5元。
这背后就涉及两个模块的联动:一个是“账本系统”——要给我扣掉5块钱;另一个是“短信系统”——要给我发通知信息。
他俩为啥能梦幻联动呢?当然是因为“账户系统”给“短信系统”发了个“事件消息”:史中老哥花了5块钱,你记得短信提醒他一下。
这仅仅是一个最简单的例子:在微众银行的系统里,每时每刻各个模块之间都在互传消息。这100亿条消息要是真像刚才例子里那样“点对点传输”,分分钟就会把IT系统撑爆了。其实它们需要一个“顺丰”——搞一个模块专门来负责“收信”、“送信”。比如我是个短信模块,我就会订阅一个“主题”,叫做“消费”。这样,其他模块里凡是发生了消费行为,“顺丰”就会把它们一个不落地收集起来,统一推送给我,我再挨个给用户发短信,这不就行了嘛!话说,广胜面临的局面比邸帅稍好一丢丢,因为市面上虽然没有能完全满足需求的开源模块,但好歹有一个比较接近的,那就是阿里云开源出来的 RocketMQ。RocketMQ 代码非常简洁,相当于一个快递小哥。为了撑住巨大的数据量,同时为了满足金融行业的安全要求,广胜他们魔改一通,增加了一倍的代码量,把“快递小哥”改成了“快递公司”,这才成功嵌入微众的系统。眼看这个“快递公司”还存在规模上限,他们又继续魔改,变成一个可以无限扩充快递员的“超级快递公司”。至此,代码已经改到面目全非,老师傅们索性给这个模块重新起了个名字——EventMesh。你发现了没,EventMesh 的作用,也有点像“代码关节”——就是夹在系统之间,让它们配合更高效嘛!总之,就在2014-2018年之间,微众笼络了一群技术理想主义者,做了好多“关节模块”。老师傅天天埋头苦干,这些成果自然在世界范围内渐渐领先。眼看形势一片大好,“禅堂”里的 Henry 却眉头紧锁,他在推演一个问题:天天精进武艺自然没有问题,但武艺高强的人如果眼里只盯着自己,就有可能走火入魔,成了“老毒物”欧阳锋;侠之大者,为国为民,传授武艺,扶济苍生,恐怕更是武学奥义啊!
可古往今来,习武之人众多,开宗立派者寥寥,个中难处,不言自明。当时的微众银行,技术团队有1000人上下,虽说大家心里或多或少都有理想主义的种子,可怎么在花园里挖呀挖呀挖,让这些种子一起发芽开大大的花,是摆在 Henry 面前极其刁钻的难题。对于微众银行的“开源大业”来说,这个引信就是——区块链。2015年,比特币开始进入大众视野,作为银行的技术负责人,Henry 自然对这种金融属性的技术异常敏感。一、比特币的底层技术“区块链”确实有用;二、比特币依赖的区块链是“公链”,公链代表的价值导向和“中国普世价值”不能融合;三、中国要想利用“区块链”,必须走另一个技术路线“联盟链”;四、中国还没有像样的团队做金融级的“联盟链”,那机会不就是留给微众银行的嘛?!
后来的事情就是按照这个剧本走的。2015年,Henry 点将一票老师傅开始做联盟链技术,2016年微众倡导成立了技术的底层组织“金链盟”,2017年,一整套联盟链技术对外发布。区块链本来就是一个“创造信任的技术”,所以 FISCO BCOS 自己首先得是可信的。最可信的方式,当然就是“剖开胸膛”——直接开源——每一行代码都能被人“看光光”,还能藏啥秘密呢?FISCO BCOS,就酱成为微众银行对外开源的第一个项目。话说 Henry 虽然是业界老司机,但这也是他职业生涯里第一个对外开源的项目,颇有“丑媳妇见公婆”的感觉。Henry 回忆,就在2017年 FISCO BCOS 开源的前几天,董事长还问他:“开源以后,大家都能看见代码,要是差评很多怎么办?”Henry 当时挠挠头,说:“反正这一步怎么都要走,只能拼一下了!”事实证明,FISCO BCOS 不仅不是丑媳妇,反而美若天仙,开源效果拔群到超出所有人想象,包括 Henry 自己。代码被各行各业争相下载,用“万人空巷”来形容也不过分。Henry 还记得,国家工信部每年都有创新大赛,按说参赛项目涉及千行百业,技术也都是天马行空。可每年获奖的项目里都有好几个用到 FISCO BCOS 的开源代码,足见这套区块链基础设施是多么有用。不过现在,咱们把镜头稍稍偏转45度,角落里有一个人正在偷偷咽口水。这个人,就是邸帅。当时可太羡慕了。大家都是做技术平台的,看别人在领域里那么领先,得到社区认可,服务各行各业,感觉他们做的事情好有意义!
反观邸帅的大数据团队,当时虽然一直在用开源,但却没对开源社区做出啥回馈。之前鼓起勇气给 Spark 计算引擎提交过几次补丁,满心欢喜等到的邮件却是:不予采纳。。。如果说 FISCO BCOS 的爆炸是一个引信,那么像邸帅这样的技术人心中的自尊就是“铀元素”——众多技术团队心中的“铀元素”被挤在一起,终于达到了“核爆”的临界点。2019年,Henry 看准时机扣动扳机,宣布了微众银行“用代码动世人”的新操作——把这些年练就的独门绝技,有一个算一个,全部开源!做出这个决定,比想象中需要更大的勇气。作为技术掌舵人,Henry 必须回答各位老板的灵魂拷问:你还记得我们之前说的“开源经济学”吧?开源绝不是做慈善,只要一个技术创新足够强,市场足够空白,运营足够认真,那么把它开源出去,是非常划算的。道理虽然摆在那儿,但把所有人都拉进这个思路,确实需要下点功夫。那些日子,Henry 把自己切成两半:一边东奔西走,苦口婆心给各个负责人普及“有舍才有得”的动力学过程;一边搜肠刮肚,物色一个能够“统领”微众开源事业的牛人。话说钟燕清可是一位江湖大神,早年在平安科技时他曾是 Henry 的团队成员,后来他加盟顺丰,帮助顺丰进行了整套中后台系统改革,也曾担任顺丰国际的 CTO——出将入相,麾下常备数百人级别的技术队伍,风光无两。Henry 三顾茅庐请这个重量级人物到微众银行做“开源办公室主任”,给他的初始团队是——零个人。这么大的落差。。。钟燕清多打听两句,也是可以理解的吧。。。第一,当星探——在银行里挖掘有潜力的“素人项目”,不断对外开放,把它们各个都培养成爱豆,让微众成为金融科技领域开放生态的领导者;
第二,当管家——统领微众银行各个产品的内部开发流程,让它们使用的开源软件保持版本协同,不要重复造轮子、乱分叉,从而提高研发效率。
这两件事儿,一个要真金白银持续砸钱,一个要深入骨髓对组织开刀。钟燕清一听就懂了:Henry 的目标在九重天外呢,那就天高任我燕儿飞了!时间来到2019年春末,彼时 Henry 终于在内部拉到了足够的精神支持,钟燕清也倾情加盟。当年7月是微众银行首届 Fintech Day 大会——在这场大会上,微众银行要宣布开源计划,并且当场祭出出10个开源项目。显然,Linkis 和 EventMesh 就冲在最前头。“找漏洞、提专利、写用户文档。”钟燕清伸出三根手指,这是开源之前的标准动作。眼看距离大会只有一个月,留给中国队的时间不多了。邸帅和一群老师傅周末加班,玩命搞定这三件事儿。“幸好强哥的代码够牛,基本不用改,检查一下脱敏和漏洞就可以了!”邸帅指指他身边的尹强,Linkis 代码第一“操刀手”。话说,写代码对于尹强老师傅来说就像呼吸一样简单。可是。。。写专利、写用户文档,那可就要了命了。。。我们从一开始就考虑国际化,所以必须要写中英双语文档。而且整个技术框架只有我最理解,还没办法交给别人代劳,最后足足写了40多篇文档。
不过为了心中的梦想,风雨中这点痛算什么?就酱,Linkis 总算开源了!邸帅像第一天出摊儿的商贩,看着一个个陌生面孔入群,有一种“只要您发话,我什么姿势都能给”的冲动。。。最开始,大家问的都是小白问题,操作系统版本不同咋办?底层环境报错咋整?哪怕打开“用户文档”随便看一眼就能解决的问题,邸帅他们也像五星级宾馆的侍者一样彬彬有礼地回答,答完再鞠俩躬给人家送走。。。听他们回忆这段儿的时候我突然想,在那个瞬间,Linkis 会不会是全世界最 nice 的开源社区,没有之一?就是这样的“跪式服务”,呵护了 Linkis 最初微弱的星火。渐渐地,火苗震颤着长大。。。一开始,只有技术人员以个人名义研究 Linkis,几个月后,开始有公司测试 Linkis 代码。BOSS 直聘,就是最早把 Linkis 用在生产环境中的公司之一。按理说,招聘这事儿和银行业务没啥关系。但数据分析的底层逻辑都是相通的,所以 Linkis 同样可以被其他行业拿去用,足见老师傅深厚的代码抽象功力。有一天他打开项目页面,突然发现有人提交了一段代码补丁,提交者正是 BOSS 直聘的老师傅。“能写出这段补丁,一看就是人家非常深入地使用了 Linkis!发现个小问题,我都不敢在页面直接回复他,怕打击积极性。。。私聊指出来,人家改完之后我赶紧给合并进去!”强哥回忆。和其他公司的老师傅在同一个代码项目上贡献力量,颇有一种“海内存知己天涯若比邻”的感觉,这让人着迷。那段时间交流比较多,他们还搞了个腾讯会议,大家日常上班干活儿时都挂在会议上,想到了和 Linkis 相关的改进意见,就随时在语音里吼,就跟一个公司的团队一样。就这样,在赛博世界,Linkis 成为了一间小小的“武馆”,各方侠客都在此歇脚切磋,灯烛摇曳诗酒氤氲。“突然发现,大家好像没啥说的了,也没夸奖,也没吐槽。”他回忆。Linkis 最初的研然是为了满足微众银行的需要,自然也就只支持微众银行用到的计算引擎,所以尹强他们把技术架构做成了“连连看”——只要把这些引擎和应用都连通,不就解决问题了嘛!但这导致了一个问题,在这个架构上,再想支持新的引擎,就会变得极其麻烦。Linkis 社区的开发者和用户一看,反正能支持的引擎已经支持很好了,不能支持的以后怕也不会支持了,那还有啥可说的?换句话说,在原来的架构下,Linkis 基本走到头了。他拉着尹强,痛陈利害,请他操刀给 Linkis 做一次脱胎换骨的手术!尹强点灯熬夜,从头到尾看了 N 遍代码,突然“灵魂附体”,顿悟出一种更高维度的“海纳百川”架构,有机会把所有计算引擎都囊括进来。
这个计划发给社区一看,如平地惊雷,大家纷纷表示:要是这玩意儿真能做出来,那 Linkis 妥妥可以再打10年,值得干!可是,此时 Linkis 已经不再是微众银行大数据团队的私人财产,它是开源项目——架构重构这件事儿,当然也不能只有尹强团队来搞,而是要分配给社区的骨干开发者。问题是,开发者们供职于天南海北的公司,时间很难协调,催狠了,代码质量就开始降低。。。有那么一瞬间,邸帅甚至冒出想法:这么麻烦还不如我们自己干算了!但下一秒他就把这个想法掐死:一个好的社区,开发者是最大的资产,怎么能遇到一点儿问题就“回到解放前”呢?!想清楚这些,他反而不急了,沉下心来一点点跟各位开发者协调,把项目周期拉长,宁可慢一点,也要保证开发的代码质量。不过,“开发完”不等于“开发好”,至少得先找一家公司吃个螃蟹,看看效果。螃蟹谁来吃呢?当然是微众银行。尹强把新款 Linkis 部署进去,像婴儿一样日夜守护,遇到小问题赶紧回炉修复,重复N次,慢慢放量,直到丝滑运转。就酱,2020年7月,Linkis 终于从 0.x 升级到了 1.0 版本。肉眼可见,社区重新活跃,无论是使用者还是开发者,数量都开始大幅增长,值得注意的是,其中开始出现大量国外用户和代码贡献者——一个国际范儿的开源项目气象初成。这一切都被钟燕清看在眼里,作为这些开源项目的“经纪人”,他在思考一个事儿:能不能在这把火上,浇那么亿点点油?“Apache,对技术人的影响是图腾式的。”钟燕清说。很多人都听过这个神秘开源组织,但了解他们背后历史的人不算多。为了你更好地理解老师傅的心思,这里我简单介绍几句:上个世纪90年代,伯纳斯·李发明了“万维网”的概念,而伊利诺伊大学的一群师生根据这个原理写出了一套高性能的 Web 服务模块(NCSA HTTPD),伴随互联网的波澜壮阔,这套代码被无数人采用。眼看大伙儿对新功能望眼欲穿,用户中的一些技术大牛决定“揭竿起义”,亲自上手贡献代码,让项目能继续发展。为了协调大家的工作,他们建立了一个邮件列表,这就是最早的 Apache 组织。没想到,这种松散的合作方式却让 HTTPD 异常成功,随后越来越多的技术在 Apache 的技术栈上开枝散叶。这群极客老师傅发现自己不小心练成了“神功”!干脆成立 Apache 基金会,专门寻找并且孵化新的开源项目。就这样,整个大数据计算的技术大厦,在 Apache 的地基上拔地而起,繁盛至今。好了,了解了这些故事,你大概会明白为什么钟燕清会把 Apache 称为“图腾”;你也会理解,钟燕清想要把微众银行的项目捐赠给 Apache 基金会,是一个多么野心勃勃的操作。但现实很骨感:中国山高路远,微众这群“野生侠客”跟 Apache 也不太熟,到底要怎么跟他们搭上线儿呢?这里咱们不妨让邸帅先休息一下,请上 EventMesh 的陈广胜来讲讲这段“血泪史”。话说 Apache 组织保留了浓厚的极客遗风:重要的事情都要民主决策,这些投票的“长老”就叫 Member。Member 大多是江湖大佬,非常有个性,也非常有原则。广胜是个人狠话不多的老师傅,人狠还行,但“话不多”对于加入 Apache 来说就是个劣势。鉴于连 Apache 的门朝哪儿开都不知道,他只能硬着头皮,求访各路前辈帮自己指条明路。前辈们很热情,你一言我一语给他讲了个叫做“Apache Way”的东西。简而言之,就是前人总结的“Apache 通关秘籍”:第一步,你要写一个捐献提案,再找一位 Apache Member 做你的保荐人,也称作“导师”;
第二步,大佬们投票。不是你想的那种礼堂投票,而是在邮件列表里投票。大佬贵人语迟,一般觉得OK就不说话,或三言两语鼓励一下,只要没人反对,你的项目就成功捐献,开始“孵化”了。
注意,“孵化”只是 Apache Way 的万里长征第一步,长征的终点是从 Apache “毕业”——当你的项目社区活跃度维持一定程度,贡献者也分散到一定标准,证明项目已经能自食其力了,就能“毕业”。
拿着 Apache 的毕业证,就好像三藏法师揣着唐玄宗的通关文牒闯世界,从任何一个技术宅门口路过,人家都会留你吃饭:官方认证东土大唐的和尚,靠谱!
广胜想了想,感觉这玩意儿也不难嘛,就跟坐飞机安检一样,按流程该干啥干啥呗!于是,他联系上一位中国的 Apache Member 给项目做导师,写了一份提案,反手就递了上去。这是在2020年8月,广胜提交社区的一封信心满满的“自荐信”,请大家放行。好几位 Member 都在邮件里回复了长长的话:这个项目看起来社区不够活跃,应用场景也不够成熟啊!反复琢磨了好几天,他有点悟了,Apache 是一个开源技术社区,所有人都是以公益的身份做贡献,大家一不拿钱二不得利,做事情的唯一准则就是内心的技术信仰。信仰是坚硬的,披荆斩棘;信仰也是柔软的,需要滋养。自己这个毛头小子直接闯进大殿扔个提案,项目好不好先不论,首先就缺了两样东西:“谦逊的态度”和“愿为社区长期贡献的证据”。想通了这些,他决定暂时撤回申请,卧薪尝胆,回炉再造。既然说社区不够活跃,那我就活跃一个给大佬们看看!他一狠心,带着团队把底层架构重写一遍,代码模块之间的协作清晰明了。这样一来,社区里的程序员贡献代码的门槛就大大降低了,企业用 EventMesh 时也更容易理解了。这个操作立竿见影,EventMesh 社区肉眼可见地欣欣向荣起来。这回广胜学精了,先把能搭上线的 Apache Member 都找到,熟不熟的先拜个拜码头,虚心请教,您看我们这社区构想还有啥改进的地方,我们先改改!果然,Apache 的大佬们非常开心,嗯,这帮小子心诚、努力,半年时间社区也着实进步不少,组织需要你!2021年春天,EventMesh 终于正式成为 Apache 的孵化项目。这一下,任督二脉算是通了,广胜乘胜追击,把其他兄弟项目纷纷介绍给 Apache 大佬们。很快,Linkis 也成为 Apache 的孵化项目。好不容易得来的战果,可不敢前功尽弃,老师傅们憋足了一口气,要从 Apache “毕业”!可毕业的标准是社区欣欣向荣,而欣欣向荣的标志是“活跃”+“分散”,这单靠写一手好代码的老师傅就不够了,必须有顶级的“操盘手”介入运营。钟燕清带着开源办公室的同学,每天泡在社区里。他们可不是去当啦啦队气氛组,而是去挖掘各种“人才”:有的人不是“代码咖”,但社交欲爆棚,来了新人总是他去送温暖,这样的人才得留住;还有些人虽然代码写得少,但是喜欢切磋,有小白提问,他总是第一时间充当志愿“客服”,这样的人才也得留住;还有的人平常就是小透明,十天半个月潜水不说话,却冷不丁贡献一波巨牛的代码补丁,这样的人才更得留住!
把这些人才团结起来有个顶好的办法,就是定期举办 Meetup,也就是开发者例会。为了更方便地组织活动,钟燕清甚至带人开发了社群运营的平台,各个项目都能在上面一键组织 Meetup。Andy 是 Linkis 项目的运营负责人,为了把一群社恐的技术宅搞来开会,他也是绞尽了脑汁。。。介龙平本来是一位平凡打工人,在上海一家公司做基层程序员。2022年初,老板让他想办法搞个大数据平台,他就发现了 Linkis。可没想到,一入社区深似海,一下就爱上了这个项目。于是他开始在社群里活跃,写文章分享。Andy 嗅到了介龙平的潜质,鼓励他做一次视频分享。可介龙平没有在众目睽睽之下发言的经验,紧张得要死,Andy 就帮他整理演讲稿,坐在电脑前听他试讲N次,还建议他把视频录下来自己对照着改进。这样保姆式的陪伴果然起了作用,一回生二回熟,到后来介龙平的演讲已经轻车熟路,备受社区小伙伴好评。随之而来,介龙平本人也从项目使用者变成了代码贡献者(Committer),后来进入项目管理委员会(PMC),成为了 Linkis 的核心成员。与之相似,无数温暖的成长故事发生在 Linkis 和 EventMesh 社区,逐渐人声鼎沸,汇成了程序员心中的小小乌托邦。从2022年末到2023年春天,Linkis 和 EventMesh 分别提交申请,从 Apache “毕业”。仅仅用了一年多时间就从入学到毕业,虽然不是 Apache 基金会历史上的最高记录,但绝对算得上“尖子生”。如此一来,微众银行突然拥有了两个 Apache 毕业项目,一时间成了开源大街上最靓的仔。这是阿帕奇基金会下属所有开源项目,EventMesh 和 Linkis 都在其列。要知道,目前拥有两个 Apache 毕业项目的公司在中国只有四家,另外三家分别是百度、阿里、华为。这场景,就好像一颗武林新星突然暴起,冲破了沉寂多年的江湖门派格局!可是对于微众银行的老师傅自己来说,这一切并不意外——恐怕在2014年命运的溪水冲出峡口的时候,他们就已经梦到了未来的大河奔流。《肖申克的救赎》里那句经典的台词说得却好:有些鸟儿是注定不会被关在牢笼里的,它们的每一片羽毛都闪耀着自由的光辉。在我看来,这背后存在一个极为有效的“化学反应”——在微众银行的大楼里,弥漫着一种属于技术人的“氧气”。微粒贷赚了多少钱,对于中后台的技术同学来说,虽然也是一种成就感,但终究比较间接。我就是一个写代码的人,我知道更直接的成就感是ta的代码跑在多少台计算机上,正在为全世界多少人提供服务。
带着这样的视角回望,微众故事中的无数闪光细节就得以穿成一条珍珠项链:在技术团队成立之初,道哥给大伙儿立了个规矩——凡是能用代码做成“工具”去解决的问题,就不能手动去解决。显然,用工具解决问题的短时成本更高。但由于工具面对的是一类问题,而手工只能面对一个问题。随着系统规模的扩大,随着时间的推移,工具会一次次被复用,从而让解决问题的平均成本不断下降。而同样重要的是,在制作工具的过程中,技术人获得了用“代码”而非“苦力”解决问题的尊严感。Linkis 在开源之初,邸帅他们哪怕死去活来也坚持写详尽的英文文档;在社区成立之初,老师傅哪怕遇到无数重复的小白问题,也坚持有问必答;在社区发展被隐形天花板挡住时,主动刮骨疗毒,重写全部代码;在 EventMesh 首次申请 Apache 遇阻时,广胜他们没有自暴自弃,而是卧薪尝胆,再次冲锋;在 Apache 孵化期间,钟燕清他们日夜泡在社群,就是为了不错过任何一个对开源做出贡献的人。他们仿佛在玩一个高难度的“角色扮演”游戏,中间哪怕有任何一个细节完成有误,都无法走到最终的“完美结局”。在关键的抉择时刻,老师傅有一万种方法放水摸鱼,但他们最终对自己如此凶狠,不正是为了一些更宝贵的东西吗?从某种程度上说,程序员和写作者有共通之处——写作者的任务是用文字来诠释这个世界;程序员的任务,是用代码抽象这个世界——抽象得越好,越简洁,就会被越多人引用,被越多人喜欢,最终被熔铸成这个世界精神底座的一部分。于是我明白,所谓技术人的良善生活,就是时刻警惕“用短期回报进行自我评价”的陷阱,然后转身把自己汇入那个广阔奔腾的,属于极客们的精神源流。中国士大夫追求的至高境界为“三不朽”:立言、立功、立德。在我看来,这同样能解释技术人的精神追求。对于微众的老师傅来说,所谓立言,就是写出经得起考验的代码,支撑起几亿用户的每一分钱不错不漏;所谓立功,就是学有余力时把这些代码开源出去,成就他人;所谓立德,就是用最严格的慎独和自尊对待自己的职业,从而在时间长河中成为一种垂范。从2022年开始,钟燕清带着开源办公室组织了每月一次的代码秀(Code Show)。顾名思义,代码秀会提前设定一个主题,各个团队围绕这个主题把相关的代码展示出来,给大家欣赏。Henry 也抽时间参加过几次代码秀,让他印象最深的其实是同学们的神态。展示了一段厉害的代码后,他们会一脸傲娇,好像在说:呵呵,明明用10句代码就能实现的功能,为什么有人要写100句?!从他们的脸上,Henry 看到了年轻时自己的倒影。任何一行代码,任何一个技术架构,乃至任何一个开源策略都很难一次就做对。一个好东西的诞生,必然要经过“放出、验证、回馈、改进”无数次的循环过程。我猜这个过程并不容易,它必然充满了错误、焦虑和自我否定。但真正伟大的技术人,会用一行行代码为想要的世界投票,以期在漫长的时光之后,收到黑暗深处的回响。在我看来,允许这个过程缓慢而自然地发生,就是技术人赖以生存的氧气。这些氧气存在于微,正如人不会关注自己的每次呼吸,却没人能停止呼吸那样。正是因为对“氧气”的慷慨供应,让微众在十年间聚集了成百上千的技术理想主义者。而这些技术人用双手创造出的千万行开源代码,就是微众银行身上熠熠生辉的羽毛。截止2022年,微众银行已经有了33个开源项目,而更多代码仍在整理和开放的过程中。在开源理想光芒的闪耀下,道哥反而愿意给我算笔经济账:首先,毋庸回避,很多微众的技术老师傅一定有办法找到薪酬更高的职位,但是因为有这些“氧气”和“羽毛”,他们有更多的动力留在微众,这对微众来说显然是一笔巨大的财富。
其次,开源项目是由全球顶尖程序员共同维护的,像 Linkis 和 EventMesh 这样的顶级项目大概可以核算为“100人”全职为它工作。其中真正供职于微众银行的,可能只有十几人,用十几人调动了上百人的能量,相当于动用了巨大的杠杆。
再次,任何一个 Apache 顶级项目,都可以撑得起一个创业公司的估值,这对微众银行的市场地位显然是巨大加持。
显然,从功利或非功利的任何角度讲,作为开源的先行者,微众都获得了巨大的好处。所谓先行者,往往只是比众人先行几步。如果我们把镜头拉开,你会发现微众这群老师傅站在潮头,而他们身旁,正在出现整整一代人的“开源武林”。2019年,中国首个国际化开源协议——木兰协议诞生;2020年,中国在开源领域第一个基金会——开放原子开源基金会成立;2021年,《国家“十四五”规划纲要》中,“开源”两个字被首次写入。同样在2021年,人民银行办公厅、中央网信办秘书局、工业和信息化部办公厅、银保监会办公厅、证监会办公厅联合发布《关于规范金融业开源技术应用与发展的意见》,明确金融机构拥抱开源的两种方式为“开源使用”和“自发开源”。在我看来,这些里程碑,共同奠定了一个重大的“认知转向”:在以往的理解中,提到中国技术、国产替代、自主可控,一般是指“闭源”的软硬件。但从2021年以后,“开源”成为事实上同等重要的国家技术战略。历史证明,人类的技术脉络如同一棵大树,它有极大概率在已有的技术生态上生长。由此可见,争夺未来的本质,就是争夺此时此刻的技术生态。而正如之前我在“开源经济学”中所说,开源是切入技术生态最凶猛的方法。“闭源”是防守,“开源”是进攻,而进攻从来都是最好的防守。我觉得我们做的事情,最大意义并不是搞出了几个顶级项目,而是为中国企业主导开源项目,影响全球技术社区探索了一些“方法论”。
在我看来,这个“开源方法论”恰恰回答了最初的那个疑问:研究一个“功法”没那么难,开武馆免费“传武”也不难。真正难的,是在一段相当漫长的时光里,如何用自己对技术的炽热感染同类,如何用善意和付出吸引伙伴,让越来越多的人站在你的左右,成为你们所共同投身的理想的一部分。Andy 告诉我,仅仅在 Linkis 一个项目里,就已经涌现出无数大佬。之前说到的介龙平,如今已经不再是寂寂无名的程序员,而是进入了更大的平台企业,用自己的经验帮助更多人受惠于开源技术;还有一位叫做张华金的师傅,他自嘲在写代码上没有过人天赋,但却依靠丰富的安装部署经验成为了社区大V,如今他会帮企业们做开源咨询,用自己的方式推动生态进展。2022年,伴随对 Apache 社区理解越来越深,陈广胜开始了“人狠话又多”的进击之路。他发起建立了“ALC(Apache Local Community)Shenzhen”城市社区,集结了很多粤港澳大湾区的开源大牛,搀扶很多本地项目走上“阿帕奇之路”。正因为在 EventMesh 和 ALC 上的积极贡献,2023年,陈广胜正式被选举为 Apache 基金会的 Member。由此,华人 Member 的数量达到了55名,中国的文化和技术哲学也得以融入全球开源社区的血脉。从两年前的毛头小子,到如今的“长老会”成员,陈广胜总结的经验只有一句话:如今,钟燕清的开源办公室已经从开始的零个人变成了如今的。。。三个人。这几年,开源正从一个只有大厂能玩的东西变成有梦想的技术人都来参与的事业;从很多人提出小白问题到更多技术人愿意深入研究白皮书,理解并且尊重开源的文化礼仪。
告别 Henry 前,我提议给他拍张照,就是文章最开始那张。背景中他的书架上有几个哆啦A梦的手办。Henry 告诉我,今年他特意调整了一下,拿走了那个大雄“躺平”的玩偶。但一代技术人因热爱而创造的开源武林,却有机会被无数闻香而至的后来者演绎成生生不息。
不辞驿骑凌风雪
再自我介绍一下吧。我叫史中,是一个倾心故事的科技记者。我的日常是和各路大神聊天。如果想和我做朋友,可以搜索微信:shizhongmax。
哦对了,如果喜欢文章,请别吝惜你的“在看”或“分享”。让有趣的灵魂有机会相遇,会是一件很美好的事情。
Thx with in Beijing